/**
 * <vs:form> 标签对应的JS对象，具有表单验证功能
 * @author zhaojh
 */
function FormObj(o) {
    this.editor = o;
}

FormObj.prototype.validate = function() {
 	var $form = jQuery(this.editor);
    //绑定事件
    $form.find(":input,input:checkbox").each(function() {
        jQuery(this).validatebox();
    });

    //触发事件
    $form.find(":input,input:checkbox").each(function() {
        jQuery(this).formDispatch();
    })
    //检测是否允许提交。根据节点的不同进行不同的校验方式
    var checkResult = true;
    $form.find(":input,input:checkbox").each(function() {
        var $thi = jQuery(this);
        if (this.getAttribute("type").toLowerCase() == "checkbox") {
            var $boxDiv = $("#" + $thi.attr("name"));
            if ($boxDiv.hasClass("validatebox-invalid")) {
                checkResult = false;
                return false;
            }
        }

        if (this.getAttribute("type").toLowerCase() == "select-multiple") {
            if ($thi.parent().hasClass("validatebox-invalid")) {
                checkResult = false;
                return false;
            }
        }

        if (this.getAttribute("type").toLowerCase() == "select-one") {
            if ($thi.attr("selectType")) {
                var $comboDiv = $thi.parent();
                var $combotext = $comboDiv.find(".combobox-text");
                if ($combotext.hasClass("validatebox-invalid")) {
                    checkResult = false;
                    return false;
                }
            } else {
                if ($thi.parent().hasClass("validatebox-invalid")) {
                    checkResult = false;
                    return false;
                }
            }
            if ($thi.parent().hasClass("validatebox-invalid")) {
                checkResult = false;
                return false;
            }
        }

        if ($thi.hasClass("validatebox-invalid")) {
            checkResult = false;
            return false;
        }
    });	 
    return checkResult;
}

FormObj.prototype.toString = function() {
    return "FormObj";
}

FormObj.prototype.onReady = function() {
    var $form = jQuery(this.editor);

    //判断是否需要及时验证
    var isImValidation = $form.attr("isImValidation");
    if (isImValidation && jQuery.trim(isImValidation) == "true") {
        $form.find(":input,input:checkbox").each(function() {
            jQuery(this).validatebox();
        });
    }

    $form.bind("submit", function() {
        //绑定事件
        $form.find(":input,input:checkbox").each(function() {
            jQuery(this).validatebox();
        });

        //触发事件
        $form.find(":input,input:checkbox").each(function() {
            jQuery(this).formDispatch();
        })

        //检测是否允许提交。根据节点的不同进行不同的校验方式
        var checkResult = true;
        $form.find(":input,input:checkbox").each(function() {
            var $thi = jQuery(this);
            if (this.getAttribute("type").toLowerCase() == "checkbox") {
                var $boxDiv = $("#" + $thi.attr("name"));
                if ($boxDiv.hasClass("validatebox-invalid")) {
                    checkResult = false;
                    return false;
                }
            }

            if (this.getAttribute("type").toLowerCase() == "select-multiple") {
                if ($thi.parent().hasClass("validatebox-invalid")) {
                    checkResult = false;
                    return false;
                }
            }

            if (this.getAttribute("type").toLowerCase() == "select-one") {
                if ($thi.attr("selectType")) {
                    var $comboDiv = $thi.parent();
                    var $combotext = $comboDiv.find(".combobox-text");
                    if ($combotext.hasClass("validatebox-invalid")) {
                        checkResult = false;
                        return false;
                    }
                } else {
                    if ($thi.parent().hasClass("validatebox-invalid")) {
                        checkResult = false;
                        return false;
                    }
                }
                if ($thi.parent().hasClass("validatebox-invalid")) {
                    checkResult = false;
                    return false;
                }
            }

            if ($thi.hasClass("validatebox-invalid")) {
                checkResult = false;
                return false;
            }
        });

        return checkResult;
    });

}

